# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function

import math
import os
import random
import shutil
import sys

sys.path.append('../../')

from libs.configs import cfgs


def mkdir(path):
  if not os.path.exists(path):
    os.makedirs(path)


divide_rate = 0.8

image_path = os.path.join(cfgs.ROOT_PATH, 'data/{}/JPEGImages'.format(cfgs.DATASET_NAME))
xml_path = os.path.join(cfgs.ROOT_PATH, 'data/{}/Annotations'.format(cfgs.DATASET_NAME))

image_list = os.listdir(image_path)

image_name = [n.split('.')[0] for n in image_list]

random.shuffle(image_name)

train_image = image_name[:int(math.ceil(len(image_name)) * divide_rate)]
test_image = image_name[int(math.ceil(len(image_name)) * divide_rate):]

image_output_train = os.path.join(
    cfgs.ROOT_PATH, 'data/{}_train/JPEGImages'.format(cfgs.DATASET_NAME))
mkdir(image_output_train)
image_output_test = os.path.join(
    cfgs.ROOT_PATH, 'data/{}_test/JPEGImages'.format(cfgs.DATASET_NAME))
mkdir(image_output_test)

xml_train = os.path.join(cfgs.ROOT_PATH, 'data/{}_train/Annotations'.format(cfgs.DATASET_NAME))
mkdir(xml_train)
xml_test = os.path.join(cfgs.ROOT_PATH, 'data/{}_test/Annotations'.format(cfgs.DATASET_NAME))
mkdir(xml_test)


count = 0
for i in train_image:
  shutil.copy(os.path.join(image_path, i + '.jpg'), image_output_train)
  if os.path.exists(os.path.join(xml_path, i + '.xml')):
    shutil.copy(os.path.join(xml_path, i + '.xml'), xml_train)
  if count % 1000 == 0:
    print("process step {}".format(count))
  count += 1

for i in test_image:
  shutil.copy(os.path.join(image_path, i + '.jpg'), image_output_test)
  shutil.copy(os.path.join(xml_path, i + '.xml'), xml_test)
  if count % 1000 == 0:
    print("process step {}".format(count))
  count += 1
